In [69]:
from keras.preprocessing.image import ImageDataGenerator
In [70]:
from keras import layers, models, optimizers
In [71]:
dataset_dir = './dataset'
In [72]:
import os
In [73]:
train_dir = os.path.join(dataset_dir, 'train')
In [74]:
train_gen = ImageDataGenerator(
    rescale = 1./255,
    rotation_range = 40,
    zoom_range = 0.2,
    shear_range = 0.2,
    height_shift_range = 0.2,
    width_shift_range = 0.2,
    fill_mode = 'nearest',
)
In [75]:
train_generator = train_gen.flow_from_directory(
    train_dir,
    target_size = (150, 150),
    class_mode = 'categorical',
    batch_size = 5
)
Found 154 images belonging to 8 classes.
In [76]:
def get_model():
    model = models.Sequential()
    model.add(layers.Conv2D(128, (3, 3), activation = 'relu', input_shape = (150, 150, 3)))
    model.add(layers.MaxPooling2D((2, 2)))
    model.add(layers.Conv2D(128, (3, 3), activation = 'relu'))
    model.add(layers.MaxPooling2D((2, 2)))
    model.add(layers.Conv2D(64, (3, 3), activation = 'relu'))
    model.add(layers.MaxPooling2D((2, 2)))
    model.add(layers.Conv2D(64, (3, 3), activation = 'relu'))
    model.add(layers.MaxPooling2D((2, 2)))
    model.add(layers.Conv2D(32, (3, 3), activation = 'relu'))
    model.add(layers.MaxPooling2D((2, 2)))
    model.add(layers.Flatten())
    model.add(layers.Dense(256, activation = 'relu'))
    model.add(layers.Dense(8, activation = 'softmax'))
    
    model.compile(
        optimizer = optimizers.RMSprop(learning_rate = 1e-4),
        loss = 'categorical_crossentropy',
        metrics = ['acc']
    )
    
    return model
In [77]:
model = get_model()
In [78]:
model.summary()
Model: "sequential_4"
_________________________________________________________________
 Layer (type)                Output Shape              Param #   
=================================================================
 conv2d_20 (Conv2D)          (None, 148, 148, 128)     3584      
                                                                 
 max_pooling2d_20 (MaxPoolin  (None, 74, 74, 128)      0         
 g2D)                                                            
                                                                 
 conv2d_21 (Conv2D)          (None, 72, 72, 128)       147584    
                                                                 
 max_pooling2d_21 (MaxPoolin  (None, 36, 36, 128)      0         
 g2D)                                                            
                                                                 
 conv2d_22 (Conv2D)          (None, 34, 34, 64)        73792     
                                                                 
 max_pooling2d_22 (MaxPoolin  (None, 17, 17, 64)       0         
 g2D)                                                            
                                                                 
 conv2d_23 (Conv2D)          (None, 15, 15, 64)        36928     
                                                                 
 max_pooling2d_23 (MaxPoolin  (None, 7, 7, 64)         0         
 g2D)                                                            
                                                                 
 conv2d_24 (Conv2D)          (None, 5, 5, 32)          18464     
                                                                 
 max_pooling2d_24 (MaxPoolin  (None, 2, 2, 32)         0         
 g2D)                                                            
                                                                 
 flatten_4 (Flatten)         (None, 128)               0         
                                                                 
 dense_8 (Dense)             (None, 256)               33024     
                                                                 
 dense_9 (Dense)             (None, 8)                 2056      
                                                                 
=================================================================
Total params: 315,432
Trainable params: 315,432
Non-trainable params: 0
_________________________________________________________________
In [79]:
history = model.fit(
    train_generator,
    steps_per_epoch = 30,
    epochs = 100
)
Epoch 1/100
30/30 [==============================] - 9s 242ms/step - loss: 2.0687 - acc: 0.1611
Epoch 2/100
30/30 [==============================] - 7s 235ms/step - loss: 2.0297 - acc: 0.1879
Epoch 3/100
30/30 [==============================] - 9s 283ms/step - loss: 2.0079 - acc: 0.1745
Epoch 4/100
30/30 [==============================] - 8s 258ms/step - loss: 1.9270 - acc: 0.2148
Epoch 5/100
30/30 [==============================] - 10s 320ms/step - loss: 1.8420 - acc: 0.2550
Epoch 6/100
30/30 [==============================] - 8s 259ms/step - loss: 1.7358 - acc: 0.3067
Epoch 7/100
30/30 [==============================] - 13s 423ms/step - loss: 1.6443 - acc: 0.3624
Epoch 8/100
30/30 [==============================] - 14s 445ms/step - loss: 1.5818 - acc: 0.4295
Epoch 9/100
30/30 [==============================] - 8s 280ms/step - loss: 1.5075 - acc: 0.4094
Epoch 10/100
30/30 [==============================] - 9s 305ms/step - loss: 1.4799 - acc: 0.4362
Epoch 11/100
30/30 [==============================] - 13s 438ms/step - loss: 1.4278 - acc: 0.4698
Epoch 12/100
30/30 [==============================] - 12s 374ms/step - loss: 1.2964 - acc: 0.4765
Epoch 13/100
30/30 [==============================] - 11s 374ms/step - loss: 1.2175 - acc: 0.5638
Epoch 14/100
30/30 [==============================] - 10s 322ms/step - loss: 1.2325 - acc: 0.5839
Epoch 15/100
30/30 [==============================] - 12s 381ms/step - loss: 1.2038 - acc: 0.5705
Epoch 16/100
30/30 [==============================] - 10s 335ms/step - loss: 1.1544 - acc: 0.5839
Epoch 17/100
30/30 [==============================] - 9s 310ms/step - loss: 1.1436 - acc: 0.5772
Epoch 18/100
30/30 [==============================] - 8s 271ms/step - loss: 1.1608 - acc: 0.6174
Epoch 19/100
30/30 [==============================] - 8s 259ms/step - loss: 1.1298 - acc: 0.5638
Epoch 20/100
30/30 [==============================] - 8s 277ms/step - loss: 1.0937 - acc: 0.6242
Epoch 21/100
30/30 [==============================] - 8s 266ms/step - loss: 1.0408 - acc: 0.6242
Epoch 22/100
30/30 [==============================] - 9s 303ms/step - loss: 0.9664 - acc: 0.5705
Epoch 23/100
30/30 [==============================] - 12s 392ms/step - loss: 0.9389 - acc: 0.6846
Epoch 24/100
30/30 [==============================] - 11s 346ms/step - loss: 0.9304 - acc: 0.6443
Epoch 25/100
30/30 [==============================] - 10s 342ms/step - loss: 0.9620 - acc: 0.5839
Epoch 26/100
30/30 [==============================] - 9s 287ms/step - loss: 0.9381 - acc: 0.6107
Epoch 27/100
30/30 [==============================] - 10s 327ms/step - loss: 0.8789 - acc: 0.7000
Epoch 28/100
30/30 [==============================] - 10s 341ms/step - loss: 0.9407 - acc: 0.6443
Epoch 29/100
30/30 [==============================] - 9s 308ms/step - loss: 0.8713 - acc: 0.6667
Epoch 30/100
30/30 [==============================] - 9s 291ms/step - loss: 0.8415 - acc: 0.7181
Epoch 31/100
30/30 [==============================] - 9s 294ms/step - loss: 0.9467 - acc: 0.6577
Epoch 32/100
30/30 [==============================] - 10s 343ms/step - loss: 0.8096 - acc: 0.7181
Epoch 33/100
30/30 [==============================] - 10s 337ms/step - loss: 0.8490 - acc: 0.6711
Epoch 34/100
30/30 [==============================] - 9s 294ms/step - loss: 0.8665 - acc: 0.6711
Epoch 35/100
30/30 [==============================] - 9s 303ms/step - loss: 0.7672 - acc: 0.7248
Epoch 36/100
30/30 [==============================] - 10s 321ms/step - loss: 0.8877 - acc: 0.6577
Epoch 37/100
30/30 [==============================] - 13s 425ms/step - loss: 0.7658 - acc: 0.7047
Epoch 38/100
30/30 [==============================] - 10s 335ms/step - loss: 0.8228 - acc: 0.6980
Epoch 39/100
30/30 [==============================] - 8s 267ms/step - loss: 0.8238 - acc: 0.6913
Epoch 40/100
30/30 [==============================] - 8s 280ms/step - loss: 0.6601 - acc: 0.7584
Epoch 41/100
30/30 [==============================] - 8s 275ms/step - loss: 0.7638 - acc: 0.7383
Epoch 42/100
30/30 [==============================] - 8s 257ms/step - loss: 0.7328 - acc: 0.7248
Epoch 43/100
30/30 [==============================] - 8s 278ms/step - loss: 0.6620 - acc: 0.7517
Epoch 44/100
30/30 [==============================] - 8s 277ms/step - loss: 0.7173 - acc: 0.7383
Epoch 45/100
30/30 [==============================] - 8s 276ms/step - loss: 0.7026 - acc: 0.7315
Epoch 46/100
30/30 [==============================] - 8s 262ms/step - loss: 0.6596 - acc: 0.7584
Epoch 47/100
30/30 [==============================] - 8s 267ms/step - loss: 0.6460 - acc: 0.7517
Epoch 48/100
30/30 [==============================] - 9s 291ms/step - loss: 0.5890 - acc: 0.8121
Epoch 49/100
30/30 [==============================] - 8s 257ms/step - loss: 0.5630 - acc: 0.7852
Epoch 50/100
30/30 [==============================] - 8s 264ms/step - loss: 0.6268 - acc: 0.7651
Epoch 51/100
30/30 [==============================] - 8s 273ms/step - loss: 0.6473 - acc: 0.7114
Epoch 52/100
30/30 [==============================] - 8s 273ms/step - loss: 0.5827 - acc: 0.7852
Epoch 53/100
30/30 [==============================] - 8s 255ms/step - loss: 0.6105 - acc: 0.7383
Epoch 54/100
30/30 [==============================] - 8s 263ms/step - loss: 0.6038 - acc: 0.7718
Epoch 55/100
30/30 [==============================] - 8s 265ms/step - loss: 0.5502 - acc: 0.7852
Epoch 56/100
30/30 [==============================] - 8s 259ms/step - loss: 0.5733 - acc: 0.7919
Epoch 57/100
30/30 [==============================] - 8s 267ms/step - loss: 0.5517 - acc: 0.7651
Epoch 58/100
30/30 [==============================] - 11s 383ms/step - loss: 0.5704 - acc: 0.7919
Epoch 59/100
30/30 [==============================] - 7s 245ms/step - loss: 0.5925 - acc: 0.7584
Epoch 60/100
30/30 [==============================] - 7s 234ms/step - loss: 0.4843 - acc: 0.8255
Epoch 61/100
30/30 [==============================] - 8s 269ms/step - loss: 0.5503 - acc: 0.7718
Epoch 62/100
30/30 [==============================] - 7s 227ms/step - loss: 0.4721 - acc: 0.8389
Epoch 63/100
30/30 [==============================] - 8s 247ms/step - loss: 0.5040 - acc: 0.7987
Epoch 64/100
30/30 [==============================] - 7s 231ms/step - loss: 0.4861 - acc: 0.8121
Epoch 65/100
30/30 [==============================] - 7s 238ms/step - loss: 0.4515 - acc: 0.8333
Epoch 66/100
30/30 [==============================] - 9s 302ms/step - loss: 0.4799 - acc: 0.8188
Epoch 67/100
30/30 [==============================] - 7s 228ms/step - loss: 0.5033 - acc: 0.8054
Epoch 68/100
30/30 [==============================] - 7s 243ms/step - loss: 0.4359 - acc: 0.8389
Epoch 69/100
30/30 [==============================] - 8s 247ms/step - loss: 0.3684 - acc: 0.8658
Epoch 70/100
30/30 [==============================] - 7s 238ms/step - loss: 0.4671 - acc: 0.8322
Epoch 71/100
30/30 [==============================] - 7s 235ms/step - loss: 0.5629 - acc: 0.7987
Epoch 72/100
30/30 [==============================] - 7s 237ms/step - loss: 0.3724 - acc: 0.8725
Epoch 73/100
30/30 [==============================] - 7s 245ms/step - loss: 0.3949 - acc: 0.8322
Epoch 74/100
30/30 [==============================] - 7s 243ms/step - loss: 0.4260 - acc: 0.8188
Epoch 75/100
30/30 [==============================] - 7s 237ms/step - loss: 0.3571 - acc: 0.8658
Epoch 76/100
30/30 [==============================] - 7s 244ms/step - loss: 0.5687 - acc: 0.8188
Epoch 77/100
30/30 [==============================] - 7s 240ms/step - loss: 0.4385 - acc: 0.8255
Epoch 78/100
30/30 [==============================] - 7s 234ms/step - loss: 0.4627 - acc: 0.8591
Epoch 79/100
30/30 [==============================] - 7s 233ms/step - loss: 0.3835 - acc: 0.8658
Epoch 80/100
30/30 [==============================] - 8s 242ms/step - loss: 0.4635 - acc: 0.8054
Epoch 81/100
30/30 [==============================] - 7s 236ms/step - loss: 0.3169 - acc: 0.8926
Epoch 82/100
30/30 [==============================] - 7s 223ms/step - loss: 0.3574 - acc: 0.8658
Epoch 83/100
30/30 [==============================] - 8s 248ms/step - loss: 0.4219 - acc: 0.8389
Epoch 84/100
30/30 [==============================] - 7s 236ms/step - loss: 0.3595 - acc: 0.8859
Epoch 85/100
30/30 [==============================] - 7s 229ms/step - loss: 0.3303 - acc: 0.8859
Epoch 86/100
30/30 [==============================] - 7s 239ms/step - loss: 0.4232 - acc: 0.8658
Epoch 87/100
30/30 [==============================] - 7s 232ms/step - loss: 0.4311 - acc: 0.8389
Epoch 88/100
30/30 [==============================] - 7s 239ms/step - loss: 0.5204 - acc: 0.8389
Epoch 89/100
30/30 [==============================] - 7s 232ms/step - loss: 0.3039 - acc: 0.8792
Epoch 90/100
30/30 [==============================] - 7s 244ms/step - loss: 0.3651 - acc: 0.8322
Epoch 91/100
30/30 [==============================] - 7s 241ms/step - loss: 0.3641 - acc: 0.8591
Epoch 92/100
30/30 [==============================] - 7s 234ms/step - loss: 0.3859 - acc: 0.8792
Epoch 93/100
30/30 [==============================] - 7s 239ms/step - loss: 0.4065 - acc: 0.8792
Epoch 94/100
30/30 [==============================] - 8s 263ms/step - loss: 0.3182 - acc: 0.8725
Epoch 95/100
30/30 [==============================] - 7s 234ms/step - loss: 0.3195 - acc: 0.8926
Epoch 96/100
30/30 [==============================] - 7s 237ms/step - loss: 0.3600 - acc: 0.8523
Epoch 97/100
30/30 [==============================] - 7s 245ms/step - loss: 0.2322 - acc: 0.9128
Epoch 98/100
30/30 [==============================] - 10s 318ms/step - loss: 0.3736 - acc: 0.8859
Epoch 99/100
30/30 [==============================] - 7s 249ms/step - loss: 0.3932 - acc: 0.8993
Epoch 100/100
30/30 [==============================] - 331s 11s/step - loss: 0.3112 - acc: 0.8658
In [81]:
class_map = train_generator.class_indices
In [82]:
inv_class_map = {}
In [83]:
for i, j in class_map.items():
    inv_class_map[j] = i
In [84]:
test_dir = os.path.join(dataset_dir, 'test')
In [85]:
import os
class_test_dir = os.listdir(test_dir)
import keras.utils as image
import numpy as np
import matplotlib.pyplot as plt
In [94]:
for cl in class_test_dir:
    class_test_path = os.path.join(test_dir, cl)
    if cl=='.DS_Store':
        continue
    for i in os.listdir(class_test_path):
        if i=='.DS_Store':
            continue
        img_path = os.path.join(class_test_path, i)
        img = image.load_img(img_path, target_size= (150, 150))
        img_tensor = image.img_to_array(img)
        img_tensor = np.expand_dims(img_tensor, axis = 0)
        img_tensor /= 255
        plt.imshow(img_tensor[0])
        plt.show()
        pred = np.argmax(model.predict(img_tensor))
        
        class_pred = inv_class_map[pred]
        print(f"[*] Predicted Class :: {class_pred}  <-> Actual class :: {cl}")
        
No description has been provided for this image
1/1 [==============================] - 0s 34ms/step
[*] Predicted Class :: rental  <-> Actual class :: rental
No description has been provided for this image
1/1 [==============================] - 0s 50ms/step
[*] Predicted Class :: Military  <-> Actual class :: rental
No description has been provided for this image
1/1 [==============================] - 0s 46ms/step
[*] Predicted Class :: rental  <-> Actual class :: rental
No description has been provided for this image
1/1 [==============================] - 0s 50ms/step
[*] Predicted Class :: rental  <-> Actual class :: rental
No description has been provided for this image
1/1 [==============================] - 0s 57ms/step
[*] Predicted Class :: rental  <-> Actual class :: rental
No description has been provided for this image
1/1 [==============================] - 0s 49ms/step
[*] Predicted Class :: Military  <-> Actual class :: Military
No description has been provided for this image
1/1 [==============================] - 0s 36ms/step
[*] Predicted Class :: Military  <-> Actual class :: Military
No description has been provided for this image
1/1 [==============================] - 0s 38ms/step
[*] Predicted Class :: Military  <-> Actual class :: Military
No description has been provided for this image
1/1 [==============================] - 0s 37ms/step
[*] Predicted Class :: Military  <-> Actual class :: Military
No description has been provided for this image
1/1 [==============================] - 0s 33ms/step
[*] Predicted Class :: Military  <-> Actual class :: Military
No description has been provided for this image
1/1 [==============================] - 0s 39ms/step
[*] Predicted Class :: commercial  <-> Actual class :: commercial
No description has been provided for this image
1/1 [==============================] - 0s 57ms/step
[*] Predicted Class :: commercial  <-> Actual class :: commercial
No description has been provided for this image
1/1 [==============================] - 0s 41ms/step
[*] Predicted Class :: commercial  <-> Actual class :: commercial
No description has been provided for this image
1/1 [==============================] - 0s 47ms/step
[*] Predicted Class :: commercial  <-> Actual class :: commercial
No description has been provided for this image
1/1 [==============================] - 0s 39ms/step
[*] Predicted Class :: rental  <-> Actual class :: commercial
No description has been provided for this image
1/1 [==============================] - 0s 39ms/step
[*] Predicted Class :: foregin  <-> Actual class :: foregin
No description has been provided for this image
1/1 [==============================] - 0s 34ms/step
[*] Predicted Class :: foregin  <-> Actual class :: foregin
No description has been provided for this image
1/1 [==============================] - 0s 38ms/step
[*] Predicted Class :: foregin  <-> Actual class :: foregin
No description has been provided for this image
1/1 [==============================] - 0s 42ms/step
[*] Predicted Class :: foregin  <-> Actual class :: foregin
No description has been provided for this image
1/1 [==============================] - 0s 44ms/step
[*] Predicted Class :: foregin  <-> Actual class :: foregin
No description has been provided for this image
1/1 [==============================] - 0s 35ms/step
[*] Predicted Class :: Military  <-> Actual class :: common
No description has been provided for this image
1/1 [==============================] - 0s 48ms/step
[*] Predicted Class :: common  <-> Actual class :: common
No description has been provided for this image
1/1 [==============================] - 0s 43ms/step
[*] Predicted Class :: foregin  <-> Actual class :: common
No description has been provided for this image
1/1 [==============================] - 0s 45ms/step
[*] Predicted Class :: foregin  <-> Actual class :: common
No description has been provided for this image
1/1 [==============================] - 0s 34ms/step
[*] Predicted Class :: common  <-> Actual class :: common
No description has been provided for this image
1/1 [==============================] - 0s 45ms/step
[*] Predicted Class :: temporary  <-> Actual class :: temporary
No description has been provided for this image
1/1 [==============================] - 0s 39ms/step
[*] Predicted Class :: temporary  <-> Actual class :: temporary
No description has been provided for this image
1/1 [==============================] - 0s 36ms/step
[*] Predicted Class :: temporary  <-> Actual class :: temporary
No description has been provided for this image
1/1 [==============================] - 0s 35ms/step
[*] Predicted Class :: temporary  <-> Actual class :: temporary
No description has been provided for this image
1/1 [==============================] - 0s 34ms/step
[*] Predicted Class :: temporary  <-> Actual class :: temporary
No description has been provided for this image
1/1 [==============================] - 0s 32ms/step
[*] Predicted Class :: electric  <-> Actual class :: electric
No description has been provided for this image
1/1 [==============================] - 0s 34ms/step
[*] Predicted Class :: electric  <-> Actual class :: electric
No description has been provided for this image
1/1 [==============================] - 0s 78ms/step
[*] Predicted Class :: electric  <-> Actual class :: electric
No description has been provided for this image
1/1 [==============================] - 0s 34ms/step
[*] Predicted Class :: electric  <-> Actual class :: electric
No description has been provided for this image
1/1 [==============================] - 0s 36ms/step
[*] Predicted Class :: electric  <-> Actual class :: electric
No description has been provided for this image
1/1 [==============================] - 0s 38ms/step
[*] Predicted Class :: PresidentOfIndia  <-> Actual class :: PresidentOfIndia
No description has been provided for this image
1/1 [==============================] - 0s 36ms/step
[*] Predicted Class :: temporary  <-> Actual class :: PresidentOfIndia
No description has been provided for this image
1/1 [==============================] - 0s 38ms/step
[*] Predicted Class :: PresidentOfIndia  <-> Actual class :: PresidentOfIndia
No description has been provided for this image
1/1 [==============================] - 0s 34ms/step
[*] Predicted Class :: temporary  <-> Actual class :: PresidentOfIndia
No description has been provided for this image
1/1 [==============================] - 0s 38ms/step
[*] Predicted Class :: temporary  <-> Actual class :: PresidentOfIndia
In [102]:
correct_count = 0
total_count = 0
tp = {}
fp = {}
fn = {}
tn = {}
precision_dict = {}
recall_dict = {}

for cl in class_test_dir:
    tp[cl] = 0
    fp[cl] = 0
    fn[cl] = 0
    tn[cl] = 0
    precision_dict[cl] = 0
    recall_dict[cl] = 0

for cl in class_test_dir:
    class_test_path = os.path.join(test_dir, cl)
    if cl == ".DS_Store":
        continue
    for i in os.listdir(class_test_path):
        if i == ".DS_Store":
            continue
        img_path = os.path.join(class_test_path, i)
        img = image.load_img(img_path, target_size= (150, 150))
        img_tensor = image.img_to_array(img)
        img_tensor = np.expand_dims(img_tensor, axis = 0)
        img_tensor /= 255
        plt.imshow(img_tensor[0])
        plt.show()
        pred = np.argmax(model.predict(img_tensor))
        total_count += 1
        class_pred = inv_class_map[pred]
        if class_pred == cl:
            tp[cl] += 1 
            correct_count += 1
        else:
            fp[class_pred] += 1
            fn[cl] += 1
            
            
        print(f"[*] Predicted Class :: {class_pred}  <-> Actual class :: {cl}")
No description has been provided for this image
1/1 [==============================] - 0s 43ms/step
[*] Predicted Class :: rental  <-> Actual class :: rental
No description has been provided for this image
1/1 [==============================] - 0s 40ms/step
[*] Predicted Class :: Military  <-> Actual class :: rental
No description has been provided for this image
1/1 [==============================] - 0s 35ms/step
[*] Predicted Class :: rental  <-> Actual class :: rental
No description has been provided for this image
1/1 [==============================] - 0s 40ms/step
[*] Predicted Class :: rental  <-> Actual class :: rental
No description has been provided for this image
1/1 [==============================] - 0s 44ms/step
[*] Predicted Class :: rental  <-> Actual class :: rental
No description has been provided for this image
1/1 [==============================] - 0s 34ms/step
[*] Predicted Class :: Military  <-> Actual class :: Military
No description has been provided for this image
1/1 [==============================] - 0s 40ms/step
[*] Predicted Class :: Military  <-> Actual class :: Military
No description has been provided for this image
1/1 [==============================] - 0s 61ms/step
[*] Predicted Class :: Military  <-> Actual class :: Military
No description has been provided for this image
1/1 [==============================] - 0s 41ms/step
[*] Predicted Class :: Military  <-> Actual class :: Military
No description has been provided for this image
1/1 [==============================] - 0s 34ms/step
[*] Predicted Class :: Military  <-> Actual class :: Military
No description has been provided for this image
1/1 [==============================] - 0s 35ms/step
[*] Predicted Class :: commercial  <-> Actual class :: commercial
No description has been provided for this image
1/1 [==============================] - 0s 32ms/step
[*] Predicted Class :: commercial  <-> Actual class :: commercial
No description has been provided for this image
1/1 [==============================] - 0s 36ms/step
[*] Predicted Class :: commercial  <-> Actual class :: commercial
No description has been provided for this image
1/1 [==============================] - 0s 36ms/step
[*] Predicted Class :: commercial  <-> Actual class :: commercial
No description has been provided for this image
1/1 [==============================] - 0s 35ms/step
[*] Predicted Class :: rental  <-> Actual class :: commercial
No description has been provided for this image
1/1 [==============================] - 0s 35ms/step
[*] Predicted Class :: foregin  <-> Actual class :: foregin
No description has been provided for this image
1/1 [==============================] - 0s 37ms/step
[*] Predicted Class :: foregin  <-> Actual class :: foregin
No description has been provided for this image
1/1 [==============================] - 0s 38ms/step
[*] Predicted Class :: foregin  <-> Actual class :: foregin
No description has been provided for this image
1/1 [==============================] - 0s 46ms/step
[*] Predicted Class :: foregin  <-> Actual class :: foregin
No description has been provided for this image
1/1 [==============================] - 0s 42ms/step
[*] Predicted Class :: foregin  <-> Actual class :: foregin
No description has been provided for this image
1/1 [==============================] - 0s 36ms/step
[*] Predicted Class :: Military  <-> Actual class :: common
No description has been provided for this image
1/1 [==============================] - 0s 39ms/step
[*] Predicted Class :: common  <-> Actual class :: common
No description has been provided for this image
1/1 [==============================] - 0s 34ms/step
[*] Predicted Class :: foregin  <-> Actual class :: common
No description has been provided for this image
1/1 [==============================] - 0s 49ms/step
[*] Predicted Class :: foregin  <-> Actual class :: common
No description has been provided for this image
1/1 [==============================] - 0s 34ms/step
[*] Predicted Class :: common  <-> Actual class :: common
No description has been provided for this image
1/1 [==============================] - 0s 34ms/step
[*] Predicted Class :: temporary  <-> Actual class :: temporary
No description has been provided for this image
1/1 [==============================] - 0s 36ms/step
[*] Predicted Class :: temporary  <-> Actual class :: temporary
No description has been provided for this image
1/1 [==============================] - 0s 35ms/step
[*] Predicted Class :: temporary  <-> Actual class :: temporary
No description has been provided for this image
1/1 [==============================] - 0s 33ms/step
[*] Predicted Class :: temporary  <-> Actual class :: temporary
No description has been provided for this image
1/1 [==============================] - 0s 35ms/step
[*] Predicted Class :: temporary  <-> Actual class :: temporary
No description has been provided for this image
1/1 [==============================] - 0s 35ms/step
[*] Predicted Class :: electric  <-> Actual class :: electric
No description has been provided for this image
1/1 [==============================] - 0s 36ms/step
[*] Predicted Class :: electric  <-> Actual class :: electric
No description has been provided for this image
1/1 [==============================] - 0s 34ms/step
[*] Predicted Class :: electric  <-> Actual class :: electric
No description has been provided for this image
1/1 [==============================] - 0s 30ms/step
[*] Predicted Class :: electric  <-> Actual class :: electric
No description has been provided for this image
1/1 [==============================] - 0s 35ms/step
[*] Predicted Class :: electric  <-> Actual class :: electric
No description has been provided for this image
1/1 [==============================] - 0s 34ms/step
[*] Predicted Class :: PresidentOfIndia  <-> Actual class :: PresidentOfIndia
No description has been provided for this image
1/1 [==============================] - 0s 34ms/step
[*] Predicted Class :: temporary  <-> Actual class :: PresidentOfIndia
No description has been provided for this image
1/1 [==============================] - 0s 34ms/step
[*] Predicted Class :: PresidentOfIndia  <-> Actual class :: PresidentOfIndia
No description has been provided for this image
1/1 [==============================] - 0s 42ms/step
[*] Predicted Class :: temporary  <-> Actual class :: PresidentOfIndia
No description has been provided for this image
1/1 [==============================] - 0s 43ms/step
[*] Predicted Class :: temporary  <-> Actual class :: PresidentOfIndia
In [105]:
accuracy = correct_count / total_count
print(accuracy)
0.8
In [100]:
precision_macro_avg = sum(precision_dict.values()) / total_count
recall_macro_avg = sum(recall_dict.values()) / total_count
print(precision_macro_avg)
print(recall_macro_avg)
0.02
0.02
In [101]:
f1_score = 2 * precision_macro_avg * recall_macro_avg / (precision_macro_avg + recall_macro_avg)
print(f1_score)
0.02